<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>

<body>
    <script>
        // promise是异步编程的一种解决方案。从语法上说，Promise 是一个对象，从它可以获取异步操作的消息。
        // let p = new Promise((resolve, reject) => {
        //     $.ajax({
        //         url: "mock/user.json",
        //         success: function (user) {
        //             console.log("查询用户信息成功:", user)
        //             resolve(user)
        //         },
        //         error: function (err) {
        //             reject(err)
        //         }
        //     })
        // })

        // // promise调用成功，会执行then(),失败则会执行catch()
        // p.then((user) => {
        //     return new Promise((resolve, reject) => {
        //         // 获取用户课程
        //         $.ajax({
        //             url: `mock/user_course_${user.id}.json`,
        //             success: function (course) {
        //                 console.log("查询用户课程信息：", course)
        //                 resolve(course)
        //             },
        //             error: function (err1) {
        //                 reject(err1)
        //             }
        //         })
        //     })

        // }).then((course) => {
        //     // 获取用户课程分数
        //     $.ajax({
        //         url: `mock/course_score_${course.id}.json`,
        //         success: function (score) {
        //             console.log("查询用户课程得分信息：", score)
        //         },
        //         error: function (err2) {
        //             console.log(err2)
        //         }
        //     })
        // }).catch(err => console.log(err))

        // 封装写法
        function get(url, data) {
            return new Promise((resolve, reject) => {
                $.ajax({
                    url, url,
                    data, data,
                    success: function (data) {
                        resolve(data)
                    },
                    error: function (err) {
                        reject(err)
                    }
                })
            })
        }

        get('mock/user.json')
        .then(data => {
            console.log("用户信息：", data)
            return get(`mock/user_course_${data.id}.json`)
        })
        .then(data => {
            console.log("用户课程信息：",data)
            return get(`mock/course_score_${data.id}.json`)
        })
        .then(data => {
            console.log("用户课程得分信息：",data)
        }).catch(err => console.log(err))
    </script>
</body>

</html>